package com.xzgj.fmmall.dao;

import com.xzgj.fmmall.entity.Product;
import com.xzgj.fmmall.generator.GeneratorDAO;
import com.xzgj.fmmall.vo.ProductVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ProductMapper extends GeneratorDAO<Product> {
    //查询所有商品
    public List<ProductVO> selectAllProducts ();
    //查询推荐商品
    public List<ProductVO> selectRecommendProducts ();
    //查询十款最新推荐商品
    public List<ProductVO> selectLatestRecommendProducts ();
    //查询每个分类下销量前6的商品
    public List<ProductVO> selectTopProductsOnSoldNumEveryCategory(int rootCategoryId);

    /**
     * 根据三级分类id分页查询商品信息---严格意义上讲，我们查询商品都应该要从三级分类id开始查询，但是有的商品只有一级、二级分类
     * @param categoryId:三级分类id
     * @param start：起始索引（从第几个开始查询）
     * @param limit：查询记录数（查询多少条）
     * @return
     */
    public List<ProductVO> selectProductByCategoryId(@Param("categoryId") int categoryId,
                                                     @Param("start") int start,
                                                     @Param("limit") int limit);

    /**
     * 根据类别id查询当前类别下所有商品的品牌
     * @param categoryId
     * @return
     */
    public List<String> selectBrandsByCategoryId( int categoryId);

    /**
     * 根据关键字模糊搜索商品信息
     * @param keyword
     * @return
     */
    public List<ProductVO> selectProductByKeyword(@Param("keyword") String keyword,
                                                  @Param("pageNo") int pageNo,
                                                  @Param("pageSize") int pageSize);

    /**
     * 根据keyword查询当前类别下所有商品的品牌
     * @param keyword
     * @return
     */
    public List<String> selectBrandsByKeyword(@Param("keyword") String keyword);
}
